My definition of "big" is that the obvious thing you want to do does not cut it. If I have to write a new algorithm because the built-in library version is not good enough, parallelize for time or space constraints, or put in extra work just to visualize or analyze the data, then I consider the problem to be "big". By this definition, problems that were big at one point may no longer be big due to improvements in hardware and software. But the definition of big does not change - only the classification of the problem changes.

-- Viral B. Shah, Co-founder of the Julia Language

  • Blocks.jl - abstract away data location?
  • Alan's parallel prefix - abstract away data parallelism
  • Moral of the story - abstraction for elegance, readability without sacrificing performance because we have the right primitives